/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package fr.univnantes.alma.arbres;

import java.util.LinkedList;

/**
 *
 * @author clotildemassot
 */
class NoeudLA<T> extends Noeud<T> {


    private NoeudLA<T> pere;
    private LinkedList<NoeudLA<T>> fils;
    



    /*********** CONSTRUCTEUR ***********/


    /**
     * Constructeur d'initialisation
     * @param etiquette
     * @param pere
     * @param position
     */
    public NoeudLA(int etiquette, NoeudLA<T> pere, int position, T valeur) {
        super(etiquette, valeur, position);
        this.pere = pere;
        this.fils = new LinkedList<NoeudLA<T>>();
    }

    public NoeudLA(Integer etiquette, NoeudLA<T> pere, int position) {
        super(etiquette,position);
        this.pere = pere;
        this.fils = new LinkedList<NoeudLA<T>>();
    }



    /*********** MUTATEURS ***********/

    /**
     * Définit la liste des fils
     * @param fils
     */
    public void setListeFils(LinkedList<NoeudLA<T>> fils) {
        this.fils = fils;
    }

    /**
     * Définit le père
     * @param pere
     */
    public void setPere(NoeudLA<T> pere) {
        this.pere = pere;
    }



    /*********** ACCESSEURS ***********/

    /**
     * Retourne la liste des fils
     * @return une LinkedList des Noeuds fils
     */
    public LinkedList<NoeudLA<T>> getFils() {
        return fils;
    }

    /**
     * Retourne le père du Noeud
     * @return un Noeud qui est le père
     */
    public NoeudLA<T> getPere() {
        return pere;
    }


    /*********** METHODES ***********/

    /**
     * Cette fonction transforme un NoeudLA<T> en un simple Noeud
     * @return un type Noeud
     */
    public Noeud<T> autoCast(){
        return (Noeud<T>) this;
    }


    /*********** AFFICHAGE ***********/

    /**
     * Cette procédure permet d'afficher la liste des fils du Noeud (leur étiquette)
     */
    public void affichageFils(){
        LinkedList<NoeudLA<T>> fratrie = this.fils;
        if (fratrie.isEmpty())
            {System.out.println("c'est une feuille, ");}
        else
            {
              for(int i=0; i < fratrie.size(); i++)
                  System.out.print(fratrie.get(i).toString() + ", ");
              System.out.println("");
            }
    }


}
